home *** CD-ROM | disk | FTP | other *** search
- ;void background(code);
- ; unsigned char code;
-
- EXTRN _memory_model:byte
- EXTRN _text_attr:byte
-
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS:_TEXT
- PUBLIC _background
- _background proc near
- push bp ;save BP
- mov bp,sp ;set stack frame
- cmp _memory_model,0 ;near or far?
- jle begin ;jump if near
- inc bp ;else add 2 to BP
- inc bp ;
- begin: mov al,_text_attr ;get _text_attr
- and al,1111B ;turn off four high bits
- mov bl,[bp+4] ;get the code
- cmp bl,97 ;lower case?
- jae L1 ;jump ahead if so
- or al,10000000B ;set intensity bit
- add bl,32 ;make it lower case
- L1: sub bh,bh ;use BH as mask
- cmp bl,107 ;black?
- je L2 ;jump if so
- inc bh ;increase mask value
- cmp bl,98 ;blue?
- je L2 ;jump if so
- inc bh ;increase mask value
- cmp bl,103 ;green?
- je L2 ;jump if so
- inc bh ;increase mask value
- cmp bl,99 ;cyan?
- je L2 ;jump if so
- inc bh ;increase mask value
- cmp bl,114 ;red?
- je L2 ;jump if so
- inc bh ;increase mask value
- cmp bl,109 ;magenta?
- je L2 ;jump if so
- inc bh ;increase mask value
- cmp bl,121 ;yellow?
- je L2 ;jump if so
- inc bh ;increase mask value
- cmp bl,119 ;white?
- je L2 ;jump if so
- jmp short L3 ;else don't change color
- L2: mov cl,4 ;shift left by four bits
- shl bh,cl ;make the shift
- or al,bh ;set the bits
- mov _text_attr,al ;change _text_attr
- pop bp ;restore BP
- L3: cmp _memory_model,0 ;quit
- jle quit ;
- db 0CBh ;RET far
- quit: ret ;RET near
- _background endp
- _TEXT ENDS
- END